package com.team06.service;

import com.team06.pojo.FlightRouteHistory;
import com.team06.pojo.FlightRouteInfo;
import com.team06.pojo.PageResult;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

public interface FlightSearchService {
    // 航班飞机查询
    PageResult<Map<String, Object>> getFlightPlanes(int page, int pageSize);
    // 通过航班号查询航班信息
    PageResult<Map<String, Object>> getFlightsByAircraftId(String cfno, int page, int pageSize);
    // 通过飞机机型查询航班信息
    PageResult<Map<String, Object>> getFlightsByAircraftType(String cftp, int page, int pageSize);
    // 查询所有航班时间信息
    PageResult<Map<String, Object>> queryFlightTimeInfo(int page, int pageSize);
    // 通过航班号查询航班时间信息
    PageResult<Map<String, Object>> queryFlightTimeInfoByFlightNumber(String flightNumber, int page, int pageSize);
    // 查询所有机场信息
    PageResult<Map<String, Object>> getAllAirports(int page, int pageSize);
    // 通过机场中文名查询机场信息
    PageResult<Map<String, Object>> getAirportsByCnName(String cnnm, int page, int pageSize);
    // 通过机场英文名查询机场信息
    PageResult<Map<String, Object>> getAirportsByEnName(String ennm, int page, int pageSize);
    //航班航线变更查询
    PageResult<FlightRouteInfo> getFlightRoutes(int page, int pageSize);
    // 通过航班号查询航线信息
    List<FlightRouteInfo> getFlightRouteByFlightNumber(String flightNumber);

    // 查询所有行李转盘信息
    PageResult<Map<String, Object>> getAllBllsBelts(int page, int pageSize);

    // 通过航班号查询行李转盘信息
    PageResult<Map<String, Object>> getBllsBeltsByFlightId(String flid, int page, int pageSize);

    // 查询所有登机口信息
    PageResult<Map<String, Object>> getAllBoardingGates(int page, int pageSize);
    // 通过航班号查询登机口信息
    PageResult<Map<String, Object>> getBoardingGatesByFlightId(String flid, int page, int pageSize);
    // 通过登机口编号查询登机口信息
    PageResult<Map<String, Object>> getBoardingGatesByCode(String code, int page, int pageSize);
    // 在FlightSearchService.java中添加

    // 查询所有航线变更历史
    PageResult<FlightRouteHistory> getAllRouteHistories(int page, int pageSize);

    // 通过航班号查询航线变更历史
    PageResult<FlightRouteHistory> getRouteHistoriesByFlightNumber(String flightNumber, int page, int pageSize);

    // 通过变更后始发地查询
    PageResult<FlightRouteHistory> getRouteHistoriesByNewDeparture(String departure, int page, int pageSize);

    // 通过变更后目的地查询
    PageResult<FlightRouteHistory> getRouteHistoriesByNewDestination(String destination, int page, int pageSize);

    // 通过变更后经停站查询
    PageResult<FlightRouteHistory> getRouteHistoriesByNewStopover(String stopover, int page, int pageSize);

    // 按日期统计起降架次
    // 按日期范围统计每天的起降架次
    List<Map<String, Object>> getDailyFlightStatistics(String startDate, String endDate);
    // 计数方法
    long countAllRouteHistories();
    long countRouteHistoriesByFlightNumber(String flightNumber);
    long countRouteHistoriesByNewDeparture(String departure);
    long countRouteHistoriesByNewDestination(String destination);
    long countRouteHistoriesByNewStopover(String stopover);




    // 计数方法
    long countFlightPlanes();
    long countFlightsByAircraftId(String cfno);
    long countFlightsByAircraftType(String cftp);
    long countFlightTimeInfo();
    long countFlightTimeInfoByFlightNumber(String flightNumber);
    long countAllAirports();
    long countAirportsByCnName(String cnnm);
    long countAirportsByEnName(String ennm);
    long countFlightRoutes();

    long countAllBllsBelts();
    long countBllsBeltsByFlightId(String flid);

    // 计数方法
    long countAllBoardingGates();
    long countBoardingGatesByFlightId(String flid);
    long countBoardingGatesByCode(String code);



}
